#ifndef WIDGET_H
#define WIDGET_H

#include    <QWidget>
#include    <QLabel>
#include    <QTreeWidget>
#include    <QVBoxLayout>
#include    <QLineEdit>
#include    <QMessageBox>
#include    <QHBoxLayout>
#include    <QProgressBar>
#include    <QTextEdit>
#include    <QDebug>
#include    <QVector>
#include    <QList>
#include    <QSerialPort>
#include    <QComboBox>
#include    <QToolButton>
#include    <QTreeWidgetItem>
#include    <QStringList>
#include    <QFont>
#include    <QMessageBox>
#include    <QCheckBox>
#include    <QLineEdit>
#include    <QSerialPortInfo>
#include    <QSerialPort>
#include    <QDoubleSpinBox>
#include    <QProgressBar>
#include    <QGraphicsView>
#include    <QGraphicsScene>
#include    <QPixmap>
#include    <QFile>
#include    <QFileDialog>
#include    <QImage>
#include    <opencv2/opencv.hpp>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget{
        Q_OBJECT
    public:
        Widget(QWidget *parent = nullptr);
        ~Widget();
    private:
        void Free();
        void addHardwareTreeWidgetToGroupBox();
        void addAlgorithmTreeWidgetToGroupBox();
    public:
        void GetSourceImage();
        void FoulerFilttering();
        void disPlayFiltterImage();
    private slots:
        void on_verticalSlider_sliderMoved(int position);
        void on_verticalSlider_valueChanged(int value);
    private:
        Ui::Widget *ui;
        QVector<QLabel* >                    LabelVector;
        QVector<QComboBox*>         ComboxVector;
        QVector<QToolButton*>        ToolButtonVector;
        QVBoxLayout*                               treeVBoxLayout;
        QVBoxLayout*                               treeVBoxLayout2;
        QTreeWidget*                                 hardwareTreeWidget;
        QTreeWidget*                                 algorithmTreeWidget;
        QVector<QWidget* >                  WidgetVector;
        QVector<QHBoxLayout*>       WidgetHBoxLayoutVector;
        QCheckBox*                                      checkBox1;
        QVector<QCheckBox*>              AlgoTreeWdCheckBoxVec;
        QVector<QDoubleSpinBox* >   DoubleSpinBoxVec;
        QVector<QTreeWidgetItem* >  TreeWidgetItemVector;
        QVector<QTreeWidgetItem*>   SecondaryTreeWidgetItemVec;
    private:
        QProgressBar*               processBar;
        QProgressBar*               processBar2;
        QVector<QSpinBox*>          SpinBoxVector;
        QLineEdit*                  lineEdit1;
        QLineEdit*                  lineEdit2;
        QLineEdit*                  lineEdit3;
        QGraphicsScene*             scene;
        QGraphicsScene*             scene2;
        QVector<QPixmap>            FiltterImageVec;
};
#endif // WIDGET_H
